from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from django.core.paginator import Paginator
from .ser import *
from .models import *


# Create your views here.

# 员工表操作
class UserM(APIView):
    # 添加
    def post(self,request):
        # 调用序列化器
        ser=UserSer(data=request.data)
        # 验证
        if ser.is_valid():
            ser.save()
            # 返回
            return Response({'code':'200'})
        else:
            print(ser.errors)
            return Response({'code':'10010'})

    #  分页展示员工表
    def get(self,request):
        # 获取员工表所有信息
        user=User.objects.all()
        # 以分页的形式获取
        p=Paginator(user,2)
        # 获取当前页
        cpage=request.GET.get('cpage')
        # 获取当前页数据
        result=p.page(cpage)
        # 获取总页数
        tpages=p.num_pages
        # 调用序列化器
        ser=UserSer(result,many=True)
        # 返回
        return Response({'code':'200','userlist':ser.data,'tpages':tpages})
#   部门表操作
class Department(APIView):
    def post(self,request):
        # 调用序列化器
        ser=departmentSer(data=request.data)
        # 验证
        if ser.is_valid():
            # 保存
            ser.save()
            # 返回
            return Response({'code':'200'})
        else:
            print(ser.errors)
            return Response({'code':'200'})

    #   展示部门表
    def get(self,request):
        # 获取
        dep=department.objects.all()
        # 调用序列化器
        ser=departmentSer(dep,many=True)
        # 返回
        return Response({'code':'200','list':ser.data})

class user_login(APIView):
    def post(self,request):
        # 获取用户名和密码
        username=request.data.get('username')
        password=request.data.get('password')
        # 通过用户名过滤

#   图书分类表操作
class BcateM(APIView):
    # 展示图书分类表
    def get(self,request):
        # 获取分类表所有字段
        cate=Bcate.objects.all()
        # 调用序列化器
        ser=Bcateser(cate,many=True)
        # 返回
        return Response({'code':'200','catelist':ser.data})

#   图书表操作
class BookM(APIView):
    # 分页展示图书表
    def get(self,request):
        # 获取图书表所有信息
        book=Book.objects.all()
        # 以分页的形式展示
        p=Paginator(book,2)
        # 获取当前页
        cpage=request.GET.get('cpage')
        # 获取当前页数据  page就理解成数据吧
        result=p.page(cpage)
        # 获取总页数
        tpages=p.num_pages
        # 调用序列化器
        ser=Bookser(result,many=True)
        # 返回
        return Response({'code':'200','booklist':ser.data,'tpages':tpages})

#   图书表查找
class BookSou(APIView):
    # 图书搜索
    def get(self,request):
        # 获取图书表name字段
        name=request.GET.get('name')
        # 通过名称过滤
        sou=Book.objects.filter(name=name).all()
        # 调用序列化器
        ser=Bookser(sou,many=True)
        return Response({'code':200,'list':ser.data})
